package com.cnaaa.pay.vo;

import lombok.Data;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 2018/10/30 Create by 郭文梁
 * JqGridResult
 * JQGrid返回对象
 *
 * @author 郭文梁
 * @date 2018/10/30
 */
@Data
public class JqGridResult<T> {
    /**
     * 创建Result的工厂方法
     *
     * @param data 数据
     * @param <T>  数据类型
     * @return Result
     */
    public static <T> JqGridResult<T> of(List<T> data) {
        JqGridResult<T> result = new JqGridResult<T>();
        result.setRows(data);
        return result;
    }

    /**
     * 页码
     */
    private int page;
    /**
     * 数据总数
     */
    private long total;
    /**
     * 结果总数
     */
    private long records;
    /**
     * 结果集
     */
    private List<T> rows;
    /**
     * 用户自定义数据
     */
    private Map<String, Object> userdata;

    /**
     * 设置Page
     *
     * @param page page
     * @return this
     */
    public JqGridResult<T> page(int page) {
        this.page = page;
        return this;
    }

    /**
     * 设置total
     *
     * @param total total
     * @return this
     */
    public JqGridResult<T> total(int total) {
        this.total = total;
        return this;
    }

    /**
     * 设置records
     *
     * @param records records
     * @return this
     */
    public JqGridResult<T> records(long records) {
        this.records = records;
        return this;
    }

    /**
     * 设置用户数据
     *
     * @param key   键
     * @param value 值
     * @return Result
     */
    public JqGridResult<T> userData(String key, String value) {
        if (userdata == null) {
            userdata = new HashMap<>(5);
        }
        userdata.put(key, value);
        return this;
    }
}
